#define  _CRT_SECURE_NO_WARNINGS 1
#include"Stack.h"

void test1(SL* pc)
{
	SLPush(pc, 1);
	SLPush(pc, 2);
	SLPop(pc);
	SLPush(pc, 3);
	SLPush(pc, 4);
	while (!SLEmpty(pc))
	{
		printf("%d\n", SLTop(pc));
		SLPop(pc);
	}

	return;
}


int main()
{
	SL test;
	SLInit(&test);
	test1(&test);
	return 0;
}

//typedef char SLdatatype;
//typedef struct SList
//{
//	SLdatatype* a;
//	int  top;
//	int capacity;
//}SL;
//
//void SLInit(SL* ptr);
//void SLDestroy(SL* ptr);
//void SLPush(SL* ptr, SLdatatype x);
//void STPop(SL* ptr);
//SLdatatype SLTop(SL* ptr);
//bool SLEmpty(SL* ptr);
//
//
//
//void SLInit(SL* ptr)
//{
//	assert(ptr);
//	ptr->a = NULL;
//	ptr->top = 0;
//	ptr->capacity = 0;
//}
//
//void SLDestroy(SL* ptr)
//{
//	assert(ptr);
//	free(ptr->a);
//	ptr->a = NULL;
//	ptr->top = 0;
//	ptr->capacity = 0;
//}
//
//void SLPush(SL* ptr, SLdatatype x)
//{
//	if (ptr->top == ptr->capacity)
//	{
//		int newCapacity = ptr->capacity == 0 ? 4 : ptr->capacity * 2;
//		SLdatatype* tmp = (SLdatatype*)realloc(ptr->a, newCapacity * sizeof(SLdatatype));
//		if (tmp == NULL)
//		{
//			perror("realloc fail");
//			return;
//		}
//		ptr->a = tmp;
//		ptr->capacity = newCapacity;
//	}
//	ptr->a[ptr->top] = x;
//	ptr->top++;
//}
//
//void SLPop(SL* ptr)
//{
//	assert(ptr);
//	assert(!SLEmpty(ptr));
//	ptr->top--;
//}
//
//SLdatatype SLTop(SL* ptr)
//{
//	assert(ptr);
//	assert(!SLEmpty(ptr));
//	return ptr->a[ptr->top - 1];
//}
//
//bool SLEmpty(SL* ptr)
//{
//	assert(ptr);
//	return ptr->top == 0;
//}
//
//
//bool isValid(char* s) {
//	SL stack;
//	SLInit(&stack);
//	while (*s)
//	{
//		if ((*s == '{') || (*s == '(') || (*s == '['))
//		{
//			SLPush(&stack, *s);
//		}
//		else
//		{
//			if (SLEmpty(&stack))
//			{
//				SLDestroy(&stack);
//				return false;
//			}
//			char c = SLTop(&stack);
//			SLPop(&stack);
//			if (('}' == *s && c != '{') || (']' == *s && c != '[') || (')' == *s && c != '('))
//			{
//				SLDestroy(&stack);
//				return false;
//			}
//
//		}
//		s++;
//	}
//	bool r = SLEmpty(&stack);
//	return r;
//}

//int main()
//{
//	char s[] = "[[[[[[[[[[[[[[[[[[";
//	isValid(s);
//	return; 0;
//}